@Zeref
Vlw manin em vez de (cid) era (ret.id)

Por lucashgas, 10 de jan. de 2012 em Tópicos Sem Resposta
info
Grupo: Barão
Registrado: 01/05/11
Posts: 234
Reputação: +43
Gênero: Masculino

@Zeref
Vlw manin em vez de (cid) era (ret.id)

info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

@off

sei n heim... ;x fico meio esquisito n?...
info
Grupo: Conde
Registrado: 06/08/11
Posts: 752
Reputação: +112

@Slicer
Onde tu achou isso, TA MTU FODA o/
@PXG
Shutdown da Madrugada:
- Varios bugs corrigidos
- Wigglytuff reformulada (em breve Clefable e as devidas pré -evoluções também, estavam muito fora da realidade)






Editado Setembro 5 por ZerefShirou
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

@zeref
no topico sobre a atualizaçao dos novos gyms e o novo mapa dos porygons e afins.. vai vir soh junto dessa atualizaçao.. nos trolaram lgl... ;x
@Slicer como faço para por exp por stagio? eu configurei la no xml o stages.xml e configurei tb la no config coloquei true mais nao funfa como me dizer como faço pra por
info
Grupo: Conde
Registrado: 06/08/11
Posts: 752
Reputação: +112

@pionilo
Não existe mais isso, bem existe, mas não é utilizado.
Oque eu faria, na parte que o player ganha a xp, no pokeexp.lua
daria para colocar Stages lá, o jeito mais simples é uma função basiquinha e util para quem quiser q seria mais ou menos isso:
function doExpRates(cid) if not isPlayer(cid) then return 1 end if getPlayerLevel(cid) > 50 and getPlayerLevel(cid) <= 100 then return 0.75 elseif getPlayerLevel(cid) > 100 and getPlayerLevel(cid) <= 150 then return 0.5 end return 1 end
ai, iria onde da a xp e colocaria "* doExpRates(pk) [no pokeexp.lua, em algumas partes o player é "pk"]"
É o jeito que eu faria, simples e pratico
@Slicer pode ter uma ideia melhor...
@brun123
Visitando o topico e nem pra dar 1 OI
jaja edito com print, para entenderem melhor

Editado Setembro 5 por ZerefShirou
Quando eu dei a sugestão pra eles mudarem não era pra por esse lixo ai não ;s
Sepah é só 2 efeitos.
@Slicer
Achei 2 bugzitos.
As vezes o harden sai em area e as vezes o eartquake sai com algum outro efeito do pokemon.
@ZerefShirou isto serve para versao sem lvl?
@Slicer outra bronca é que esta dando este erro direto
[05/09/2012 22:26:50] [Error - CreatureScript Interface] [05/09/2012 22:26:50] data/creaturescripts/scripts/exp2.0.lua:onStatsChange [05/09/2012 22:26:50] Description: [05/09/2012 22:26:50] data/creaturescripts/scripts/exp2.0.lua:252: attempt to index field '?' (a nil value) [05/09/2012 22:26:50] stack traceback: [05/09/2012 22:26:51] data/creaturescripts/scripts/exp2.0.lua:252: in function <data/creaturescripts/scripts/exp2.0.lua:63>
E aki o exp2.0
--NIGHTMAREDAMAGE
--GUILLOTINEDAMAGE
--SEISMICTOSSDAMAGE
--PSYCHOSHIFTDAMAGE
--THUNDERWAVEDAMAGE
local combats = {
[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},
[GRASSDAMAGE] = {cor = COLOR_GRASS},
[POISONEDDAMAGE] = {cor = COLOR_GRASS},
[MORTALGASDAMAGE] = {cor = COLOR_POISON},
[FIREDAMAGE] = {cor = COLOR_FIRE2},
[bURNEDDAMAGE] = {cor = COLOR_BURN},
[WATERDAMAGE] = {cor = COLOR_WATER},
[iCEDAMAGE] = {cor = COLOR_ICE},
[NORMALDAMAGE] = {cor = COLOR_NORMAL},
[GUILLOTINEDAMAGE] = {cor = COLOR_NORMAL},
[FLYDAMAGE] = {cor = COLOR_FLYING},
[GHOSTDAMAGE] = {cor = COLOR_GHOST},
[NIGHTMAREDAMAGE] = {cor = COLOR_GHOST},
[GROUNDDAMAGE] = {cor = COLOR_GROUND},
[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},
[THUNDERWAVEDAMAGE] = {cor = COLOR_ELECTRIC},
[ROCKDAMAGE] = {cor = COLOR_ROCK},
[bUGDAMAGE] = {cor = COLOR_BUG},
[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},
[sEISMICTOSSDAMAGE] = {cor = COLOR_FIGHTING},
[DRAGONDAMAGE] = {cor = COLOR_DRAGON},
[POISONDAMAGE] = {cor = COLOR_POISON},
[DARKDAMAGE] = {cor = COLOR_DARK},
[sTEELDAMAGE] = {cor = COLOR_STEEL},
}
--alterado v1.5 tabelas agora estao em lib/configuration.lua
local function sendPlayerDmgMsg(cid, text)
if not isCreature(cid) then return true end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text)
end
local races = {
[4] = {cor = COLOR_FIRE2},
[6] = {cor = COLOR_WATER},
[7] = {cor = COLOR_NORMAL},
[8] = {cor = COLOR_FIRE2},
[9] = {cor = COLOR_FIGHTING},
[10] = {cor = COLOR_FLYING},
[11] = {cor = COLOR_GRASS},
[12] = {cor = COLOR_POISON},
[13] = {cor = COLOR_ELECTRIC},
[14] = {cor = COLOR_GROUND},
[15] = {cor = COLOR_PSYCHIC},
[16] = {cor = COLOR_ROCK},
[17] = {cor = COLOR_ICE},
[18] = {cor = COLOR_BUG},
[19] = {cor = COLOR_DRAGON},
[20] = {cor = COLOR_GHOST},
[21] = {cor = COLOR_STEEL},
[22] = {cor = COLOR_DARK},
[1] = {cor = 180},
[2] = {cor = 180},
[3] = {cor = 180},
[5] = {cor = 180},
}
local damages = {MORTALGASDAMAGE, GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE, NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, SEISMICTOSSDAMAGE}
local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE}
local ignored = {NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, MORTALGASDAMAGE, SEISMICTOSSDAMAGE, PSYCHOSHIFTDAMAGE, POISONEDDAMAGE, BURNEDDAMAGE}
local ignoremiss = {NIGHTMAREDAMAGE, MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE}
local ignorecritical = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
local cannotkill = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
function onStatsChange(cid, attacker, type, combat, value)
if combat == FLYSYSTEMDAMAGE then return false end
if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV
if not isCreature(attacker) then --alterado v1.5 cid == attacker
if not isInArray(fixdamages, combat) and combats[combat] then
doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
end
return true
end
local damageCombat = combat
--------------------------------------------------
if combat == SLEEP_POWDERDAMAGE then
if ehMonstro(cid) and ehMonstro(attacker) then
return false
end
if canAttackOther(cid, attacker) == "Cant" then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if getPlayerStorageValue(cid, 21099) >= 1 then return false end
local ret = {}
ret.id = cid
ret.cd = value
ret.check = getPlayerStorageValue(cid, conds["Sleep"])
ret.first = true
ret.cond = "Sleep"
doCondition2(ret)
return false
end
--------------------------------------------------
if combat == POISON_POWDERDAMAGE then
if ehMonstro(cid) and ehMonstro(attacker) then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if canAttackOther(cid, attacker) == "Cant" then
return false
end
if getPlayerStorageValue(attacker, 21099) >= 1 then return false end
local ret = {}
ret.id = cid
ret.cd = value
ret.check = getPlayerStorageValue(cid, conds["Poison"])
ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker)
ret.cond = "Poison"
doCondition2(ret)
return false
end
--------------------------------------------------
if type == STATSCHANGE_HEALTHGAIN then
if cid == attacker then
return true
end
if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then
return false
end
return true
end
--------------------------------------------------
if isPlayer(attacker) then
local valor = value
if valor > getCreatureHealth(cid) then
valor = getCreatureHealth(cid)
end
if combat == COMBAT_PHYSICALDAMAGE then
return false
end
if combat == PHYSICALDAMAGE then
doSendMagicEffect(getThingPos(cid), 3)
doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor)
end
if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then
doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor)
end
if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then
doPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".")
end
return true
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
return false
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then
if isSummon(attacker) or isPlayer(attacker) then
if canAttackOther(cid, attacker) == "Cant" then return false end
end
local valor = 0
if combat == COMBAT_PHYSICALDAMAGE then
valor = getOffense(attacker)
else
valor = getSpecialAttack(attacker)
end
valor = valor * playerDamageReduction
valor = valor * math.random(83, 117) / 100
if valor >= getCreatureHealth(cid) then
valor = getCreatureHealth(cid)
end
valor = math.floor(valor)
if valor >= getCreatureHealth(cid) then
if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then
setPlayerStorageValue(cid, 6598754, -1)
setPlayerStorageValue(cid, 6598755, -1)
doRemoveCondition(cid, CONDITION_OUTFIT)
end
if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 17000, 0)
setPlayerStorageValue(cid, 17001, 0)
setPlayerStorageValue(cid, 63215, -1)
doChangeSpeed(cid, PlayerSpeed)
local item = getPlayerSlotItem(cid, 8)
local btype = getPokeballType(item.itemid)
if #getCreatureSummons(cid) <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
end
end
end
------------Edited Golden Arena------------------
if getPlayerStorageValue(cid, 22545) == 1 then
if getGlobalStorageValue(22550) == 1 then
doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!")
doPlayerAddItem(cid, 2152, 100) --premio
setPlayerStorageValue(cid, 22545, -1)
doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false) --alterado v1.4
setGlobalStorageValue(22550, -1)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
return true
else
setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1)
setPlayerStorageValue(cid, 22545, -1)
doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) --alterado v1.4
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
return true
end
end
-------------------------------------------
end
doCreatureAddHealth(cid, -valor, 3, 180)
if not isPlayer(cid) then
addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")
end
return false
end
--------------------------------------------------
if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then
if isPlayer(cid) then
return false
end
if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then
return false
end
end
--------------------------------------------------
if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then
if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then
return false
end
end
--------------------------------------------------
if ehMonstro(cid) and ehMonstro(attacker) then
return false --edited monstro nao atacar monstro
end
local multiplier = 1
poketype1 = pokes[getCreatureName(cid)].type
poketype2 = pokes[getCreatureName(cid)].type2
if getCreatureCondition(cid, CONDITION_INVISIBLE) then
return false
end
if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
if isInArray(effectiveness[damageCombat].super, poketype1) then
multiplier = multiplier + 0.5
end
if isInArray(effectiveness[damageCombat].super, poketype2) then
multiplier = multiplier + 0.5
end
if isInArray(effectiveness[damageCombat].weak, poketype1) then --Edited effetivenes = pxg... ;p
multiplier = multiplier - 0.25
end
if isInArray(effectiveness[damageCombat].weak, poketype2) then
multiplier = multiplier - 0.25
end
if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
if isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --alterado v1.5
multiplier = 0.5
elseif getPlayerStorageValue(attacker, 999457) >= 1 then --alterado v1.5
multiplier = 0.5
end
end
elseif combat == COMBAT_PHYSICALDAMAGE then
if isGhostPokemon(cid) then --alterado v1.3
if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --passiva Foresight!!
doSendMagicEffect(getThingPos(cid), 3)
return false
end
end
local cd = getPlayerStorageValue(attacker, conds["Miss"])
local cd2 = getPlayerStorageValue(attacker, conds["Confusion"])
local cd3 = getPlayerStorageValue(attacker, conds["Stun"])
if cd >= 0 or cd2 >= 0 or cd3 >= 0 then
if math.random(1, 100) > 50 then --Edited miss system -- 50% chance de da miss no atk fisico
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(attacker), "MISS", 215) --alterado v1.5
return false
end
end
end
--------------------------------------------------
local valor = value
if multiplier == 1.5 then
multiplier = 1.75
elseif multiplier == 1.25 then --edited effetivines = pxg
multiplier = 1
end
--------------------------------------------------
if isSummon(cid) and isSummon(attacker) then
if getCreatureMaster(cid) == getCreatureMaster(attacker) then
return false
end
if canAttackOther(cid, attacker) == "Cant" then
return false
end
end
valor = valor * multiplier
if isSummon(attacker) then
valor = valor * getHappinessRate(attacker)
else
valor = valor * summonReduction
end
valor = math.floor(valor)
if combat == COMBAT_PHYSICALDAMAGE then
block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid)))
valor = getOffense(attacker) * block
if isInArray(specialabilities["counter"], getCreatureName(cid)) then
if math.random(1, 100) <= 10 then
doCreatureAddHealth(attacker, -valor, 3, 180) --alterado v1.5
valor = 0
doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215)
end
end
else
valor = valor / getDefense(cid)
end
-------------------------Edited CLAN SYSTEM-----------------------------------
if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then
valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk") --alterado v1.3
elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then
valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2))
end
-----------------------------------------------------------------------
--[[-------------------- Edited Proteção --------------------------------
if valor <= 10 then
valor = math.random(15, 25) --alterado v1.5
end
------------------------]]-----------------------------------------------
---------------------- FEAR / ROAR ------------------------------------
if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then --alterado!!
return true
end
--------------------------------------------------------------------------
if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) and getPlayerStorageValue(attacker, 999457) <= 0 then
valor = valor * 0 --alterado v1.5
end
end
end
if damageCombat == GROUNDDAMAGE then
if isInArray(specialabilities["levitate"], getCreatureName(cid)) then
valor = 0 --alterado v1.5
end
end
-----------------------------------------------------------------------------
local p = getThingPos(cid)
if p.x == 1 and p.y == 1 and p.z == 10 then
return false
end
if getPlayerStorageValue(cid, 9658783) == 1 then
return false --imune
end
-----------------------------------------------------------------------------
if valor >= getCreatureHealth(cid) then
if isInArray(cannotKill, combat) and isPlayer(cid) then
valor = getCreatureHealth(cid) - 1
else
valor = getCreatureHealth(cid)
end
end
--------------------------------------------
--------------Passiva Lifesteal Clobat------------
if combat == COMBAT_PHYSICALDAMAGE then
if getCreatureName(attacker) == "Crobat" then --alterado v1.4
doCreatureAddHealth(attacker, math.floor(valor))
doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
end
end
--------------------------------------------
if isSummon(attacker) then
if combat == COMBAT_PHYSICALDAMAGE then
doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
else
doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255)
end
else
if combat ~= COMBAT_PHYSICALDAMAGE then
doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
else
doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
end
if isSummon(cid) and valor ~= 0 then
valor = math.floor(valor)
addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")
end
end
if damageCombat == FIREDAMAGE and not isBurning(cid) then
local ret = {}
ret.id = cid
ret.cd = math.random(5, 12)
ret.check = getPlayerStorageValue(cid, conds["Burn"])
ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker)
ret.cond = "Burn"
doCondition2(ret)
elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then
local ret = {}
ret.id = cid
ret.cd = math.random(6, 15)
ret.check = getPlayerStorageValue(cid, conds["Poison"])
local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker)
ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2)
ret.cond = "Poison"
doCondition2(ret)
end
--[[---------------CD BAR-----------------------
if isSummon(cid) then
doCreatureExecuteTalkAction(getCreatureMaster(cid), "/pokeread")
end ]]
------------------------------------POTIONS-------------------------------------------
if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then
if getPlayerStorageValue(cid, 173) >= 1 then
if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then
setPlayerStorageValue(cid, 174, 1)
doSendAnimatedText(getThingPos(cid), "Lost Heal", 144)
end
end
end
----------------------------------------PASSIVAS-----------------------------------------
------------------------------"Counter Helix" - "Giro Ball"------------------------------ alterado v1.5 \/ formula de dano de quase todas as passivas!!
-- [outfit normal] = {out = outfit girando, efeitos}
local OutFit = {
["Scyther"] = {out = 496, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --scyther
["Scizor"] = {out = 918, cima = 236, direita = 232, esquerda = 224, baixo = 233}, --Scizor
["Shiny Scyther"] = {out = 849, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Scyther
["Hitmontop"] = {out = 1193, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --Hitmontop
["Shiny Hitmontop"] = {out = 1451, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --Shiny Hitmontop --alterado v1.4
["Pineco"] = {out = 1194, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --pineco
["Forretress"] = {out = 1192, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --Forretress
}
if OutFit[getCreatureName(cid)] then
local nome1 = getCreatureName(cid)
local chance = (nome1 == "Hitmontop" or nome1 == "Shiny Hitmontop") and (16 + getPlayerStorageValue(cid, 465987)) or 15 --alterado v1.4
if math.random(1, 100) <= chance then
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas...
return false
end
local outfitt = OutFit[nome1]
local min = (getSpecialAttack(cid)*40)*0.1
local max = min + getPokemonLevel(cid) --alterado v1.5
local function damage(cid, min, max)
if isCreature(cid) then
if isInArray({"Scyther", "Shiny Scyther"}, nome1) then
doAreaCombatHealth(cid, BUGDAMAGE, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE)
elseif isInArray({"Hitmontop", "Shiny Hitmontop"}, nome1) then
doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE)
else
doAreaCombatHealth(cid, STEELDAMAGE, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE)
end
doAreaCombatHealth(cid, null, getThingPos(cid), scythe1, 0, 0, outfitt.cima) --cima
doAreaCombatHealth(cid, null, getThingPos(cid), scythe2, 0, 0, outfitt.baixo) --baixo
doAreaCombatHealth(cid, null, getThingPos(cid), scythe3, 0, 0, outfitt.direita) --direita
doAreaCombatHealth(cid, null, getThingPos(cid), scythe4, 0, 0, outfitt.esquerda) --esquerda
end
end
setPlayerStorageValue(cid, 32623, 1)
doSetCreatureOutfit(cid, {lookType = outfitt.out}, -1)
local function doChangeO(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0)
if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
else
doRemoveCondition(cid, CONDITION_OUTFIT)
end
end
local delay = 200 -- não mexe
for i = 1, 2 do
addEvent(damage, delay*i, cid, min, max)
end
addEvent(doChangeO, 2 * 300 + 10, cid)
end
end
-------------------------------------------Lava Counter / Electricity-------------------------------------
local Fire_Thunder = {"Magmar", "Electabuzz", "Shiny Electabuzz", "Magby", "Elekid"}
--["Nome"] = {effeito, damage}
local eff = {
["Magmar"] = {5, FIREDAMAGE, 1461},
["Magby"] = {5, FIREDAMAGE}, --alterado v1.5
["Electabuzz"] = {207, ELECTRICDAMAGE, 1462},
["Shiny Electabuzz"] = {207, ELECTRICDAMAGE, 1460},
["Elekid"] = {207, ELECTRICDAMAGE},
}
if isInArray(Fire_Thunder, getCreatureName(cid)) and math.random(1, 100) <= 15 then
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas...
return false
end
local min = (getSpecialAttack(cid)*27)*0.1
local max = min + getPokemonLevel(cid)
local function sendFireEff(cid, dir, eff, damage)
if not isCreature(cid) then return true end
doAreaCombatHealth(cid, damage, getPosByDir(getThingPos(cid), dir), 0, -min, -max, eff)
end
local function doSpinFire(cid)
if not isCreature(cid) then return true end
local t = {
[1] = SOUTH,
[2] = SOUTHEAST,
[3] = EAST,
[4] = NORTHEAST,
[5] = NORTH,
[6] = NORTHWEST,
[7] = WEST,
[8] = SOUTHWEST,
}
for a = 1, 8 do
addEvent(sendFireEff, a * 140, cid, t[a], eff[getCreatureName(cid)][1], eff[getCreatureName(cid)][2])
end
addEvent(setPlayerStorageValue, 8*140, cid, 32623, 0) --proteçao
end
local out = eff[getCreatureName(cid)][3]
if out then
doSetCreatureOutfit(cid, {lookType = out}, 8*140)
end
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSpinFire(cid)
end
---------------------------------------------Demon Kicker----------------------------------
--[outfit] = outfit chutando,
local hitmonlees = {
["Hitmonlee"] = 652, --hitmonlee
["Shiny Hitmonlee"] = 878, --shiny hitmonlee
}
if isInArray({"Hitmonlee", "Shiny Hitmonlee"}, getCreatureName(cid)) and isCreature(getMasterTarget(cid)) then
if math.random(1, 100) <= (21 + getPlayerStorageValue(cid, 465987)) then
local nome = getCreatureName(cid)
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas...
return false
end
local function doChangeHitmon(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0) --proteçao
if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
else
doRemoveCondition(cid, CONDITION_OUTFIT)
end
end
local min = (getOffense(cid)*45)*0.1
local max = min + getPokemonLevel(cid)
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSetCreatureOutfit(cid, {lookType = hitmonlees[nome]}, -1)
doTargetCombatHealth(cid, getMasterTarget(cid), FIGHTINGDAMAGE, -min, -max, 255)
addEvent(doChangeHitmon, 700, cid)
end
end
-------------------------------------------Demon Puncher-------------------------------------
if isInArray({"Hitmonchan", "Shiny Hitmonchan"}, getCreatureName(cid)) and isCreature(getMasterTarget(cid)) then
if math.random(1, 100) <= (21 + getPlayerStorageValue(cid, 465987)) then
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
local name = getCreatureName(cid)
local min = (getOffense(cid)*45)*0.1
local max = min + getPokemonLevel(cid)
if ehMonstro(cid) then
hands = 0
else
hands = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "hands")
end
doSendDistanceShoot(getThingPos(cid), getThingPos(getMasterTarget(cid)), 39)
doTargetCombatHealth(cid, getMasterTarget(cid), hitmonchans[name][hands].type, -min, -max, 255)
local target = getThingPos(getMasterTarget(cid))
target.x = target.x + 1
if hands == 4 then
doSendMagicEffect(target, hitmonchans[name][hands].eff)
else
doSendMagicEffect(getThingPos(getMasterTarget(cid)), hitmonchans[name][hands].eff)
end
end
end
---------------------------------------Stunning Confusion------------------------------------------
local ducks = {"Golduck", "Psyduck"}
if isInArray(ducks, getCreatureName(cid)) and math.random(1, 100) <= 20 then
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local min = (getSpecialAttack(cid)*10)*0.1
local max = min + getPokemonLevel(cid)
local function damage(cid)
if isCreature(cid) then
doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPosWithDebug(cid), bombWee3, -min, -max, 136)
end
end
setPlayerStorageValue(cid, 32623, 1) --proteçao
for i = 1, 7 do
addEvent(damage, i*500, cid)
end
addEvent(setPlayerStorageValue, 3500, cid, 32623, 0) --proteçao
end
-----------------------------------------Groundshock-----------------------------------
if getCreatureName(cid) == "Kangaskhan" and math.random(1, 100) <= 20 then
local min = (getSpecialAttack(cid)*40)*0.1
local max = min + getPokemonLevel(cid)
doAreaCombatHealth(cid, NORMALDAMAGE, getThingPos(cid), scyther5, -min, -max, 255)
local sps = getThingPos(cid)
sps.x = sps.x+1
sps.y = sps.y+1
doSendMagicEffect(sps, 127)
end
--------------------------------------Electric Charge---------------------------------------------------
local charge = {"Pikachu", "Raichu", "Shiny Raichu"}
if isInArray(charge, getCreatureName(cid)) and math.random(1, 100) <= 15 then
if getPlayerStorageValue(cid, 253) >= 1 then
return true
end
setPlayerStorageValue(cid, 253, 1)
doSendMagicEffect(getThingPos(cid), 207)
doSendAnimatedText(getThingPos(cid), "FOCUS", 144)
end
-------------------------------------Melody------------------------------------
if getCreatureName(cid) == "Wigglytuff" and math.random(1, 100) <= 10 then
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPos(cid), powders, -6, -10, 33)
end
------------------------------------- Dragon Fury / Fury ---------------------------------------
local DracoFury = {"Persian", "Gyarados", "Shiny Gyarados", "Dratini", "Shiny Dratini", "Dragonair", "Shiny Dragonair", "Dragonite", "Shiny Dragonite"}
if isInArray(DracoFury, getCreatureName(cid)) and math.random(1, 100) <= 10 then
if getPlayerStorageValue(cid, 32623) == 1 then
return false
end
setPlayerStorageValue(cid, 32623, 1)
if getCreatureName(cid) == "Persian" then
doRaiseStatus(cid, 2, 0, 0, 10)
else --alterado v1.5
doRaiseStatus(cid, 2, 2, 0, 10)
end
for t = 1, 7 do --alterado v1.5
addEvent(sendMoveEffect, t*1500, cid, 12)
end
addEvent(setPlayerStorageValue, 10000, cid, 32623, 0) --alterado v1.5
end
------------------------------------- Mega Drain ---------------------------------------
local mega = {"Oddish", "Gloom", "Vileplume", "Kabuto", "Kabutops", "Parasect", "Tangela", "Shiny Vileplume", "Shiny Tangela"}
if isInArray(mega, getCreatureName(cid)) and math.random(1, 100) <= 10 then
local min = (getSpecialAttack(cid)*1)*0.1
local max = min + getPokemonLevel(cid)
local uid = checkAreaUid(getThingPos(cid), check, 1, 1)
for _,pid in pairs(uid) do
if isCreature(cid) and isCreature(pid) and pid ~= cid then
if isPlayer(pid) and #getCreatureSummons(pid) >= 1 then return false end
local life = getCreatureHealth(pid)
doAreaCombatHealth(cid, GRASSDAMAGE, getThingPos(pid), 0, -min, -max, 14)
local newlife = life - getCreatureHealth(pid)
doSendMagicEffect(getThingPos(cid), 14)
if newlife >= 1 then
doCreatureAddHealth(cid, newlife)
doSendAnimatedText(getThingPos(cid), "+"..newlife.."", 32)
end
end
end
end
------------------------------------- Spores Reaction ---------------------------------------
local spores = {"Oddish", "Gloom", "Vileplume", "Shiny Vileplume"}
if isInArray(spores, getCreatureName(cid)) and math.random(1, 100) <= 10 then
local random = math.random(1, 3)
if random == 1 then
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPos(cid), powders, -2, -3, 27) --2 3
elseif random == 2 then
local ret = {}
ret.id = 0
ret.cd = 6
ret.eff = 0
ret.check = 0
ret.spell = "none"
ret.cond = "Stun"
doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret)
else
doAreaCombatHealth(cid, POISON_POWDERDAMAGE, getThingPos(cid), powders, 6, 10, 84)
end
end
------------------------------------ Passiva Amnesia ---------------------------------------- daki pra baixo foi alterado v1.4 \/
local amnesia = {"Wooper", "Quagsire", "Swinub", "Piloswine"}
if isInArray(amnesia, getCreatureName(cid)) and math.random(1, 100) <= 10 then
doCreatureSay(cid, "????", 20) --a espera do efeito certo.. kk
doSendMagicEffect(getThingPos(cid), 132)
setPlayerStorageValue(cid, 253, 1)
end
----------------------------------- Passiva Zen Mind -----------------------------------------
if getCreatureName(cid) == "Slowking" and math.random(1, 100) <= 10 and isWithCondition(cid) then
function doCure(cid)
if not isCreature(cid) then return true end
if isSummon(cid) then
doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")
end
addEvent(doCure, 1000, cid)
doSetCreatureOutfit(cid, {lookType = 1001}, 2000)
end
---------------------------------- Passiva Mirror Coat ---------------------------------------
if getCreatureName(cid) == "Wobbuffet" and math.random(1, 100) <= 10 then
if getPlayerStorageValue(cid, 21099) <= 0 then
setPlayerStorageValue(cid, 21099, 1)
doSetCreatureOutfit(cid, {lookType = 1447}, -1)
end
end
--------------------------------- Passiva Illusion -----------------------------------------
--Talvez na proxima atualizaçao kkk passiva tensa...
return false
end
@Slicer
tem um bug que ta acontecendo aqui, tipo os players vão dar "fly" ai aparece a msg que ta em duel, mesmo não estando.
sabe como arruma cara ?, vlw!
OBS: Duel por order!
e quando vai dar surf também
Edit: Bom pelo que EU vi, isto deve acontecer por algumas causas
• Quando player tem 5 Pokemons ele pode aceitar Duel de 6 Pokemons (Pode ser uma das causas para continuar com storage do duel).
• Quando o player ta duel pode entrar no CP.
Essas duas causas deve fazer esse bug.
tem como colocar o duel para ex: se o cara tiver 5 Pokemons não consegue invitar duel de 6 pokemons etc, tem como pff ?.. vlw
@Slicer
info
Grupo: Conde
Registrado: 06/08/11
Posts: 752
Reputação: +112

@pionilo
Cara não uso serve do Slicer, mas acho que sim.
@Slicer
Tirar um dia para arrumar esse exp.lua, pq carai me assustei quando vi abri o spoiler do lek, pior quando vi isso aqui:
if isInArray({"Scyther", "Shiny Scyther"}, nome1) then
doAreaCombatHealth(cid, BUGDAMAGE, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE)
elseif isInArray({"Hitmontop", "Shiny Hitmontop"}, nome1) then
doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE)
else
doAreaCombatHealth(cid, STEELDAMAGE, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE)
end
Assim ficaria mais style:
if isInArray({"Scyther", "Shiny Scyther"}, nome1) then
gyroElement = BUGDAMAGE
elseif isInArray({"Hitmontop", "Shiny Hitmontop"}, nome1) then
gyroElement = FIGHTINGDAMAGE
else
gyroElement = STEELDAMAGE
end
doAreaCombatHealth(cid, gyroElement, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE)
Ah, qualquer coisa ignora, eu gosto de fazer as coisas, depois, da uma "organizada" para ser mais legível para mim e para outros tambem
info
Grupo: Visconde
Registrado: 07/01/12
Posts: 495
Reputação: +48
Gênero: Masculino
Char no Tibia: Nem Tenho

@ZerefShirou
Me chupa ? *-*
info
Grupo: Visconde
Registrado: 24/07/12
Posts: 265
Reputação: +15

Alguem saberia colocar blink com efeito fantasma no umbreon?
info
Grupo: Conde
Registrado: 06/08/11
Posts: 752
Reputação: +112

Não...
Ou seja você quer um "Dark Portal", é simples, so fazer uma versao igual blink, com outra frase e efeito, simples, ctrl + c / ctrl + v e edita as frases e.e
info
Grupo: Conde
Registrado: 06/08/11
Posts: 752
Reputação: +112
Ve se o cid é mesmo o player, ve outras coisas ai, erro console e derivados, vai testando, mas que eu saiba é x + 1 (plano cartesiano) apesar de que no Tibia o Y se botar + 1, ele desce e não sobe né, bem...
@Lendreo
Dou no max 2 meses para eles colocarem mais HP na Blissey, quem quer apostar?!
Editado Setembro 5 por ZerefShirou